package com.tedu.API.thread;

/**
 * setDaemon(boolean b)  设置线程为守护线程，true为守护线程
 *
 * 前台线程/用户线程: 创建一个线程
 * 后台线程/守护线程: 创建一个线程并且指定其为守护线程
 *
 * 案例: 创建两个线程: t1   飞龙汤     前台线程
 *                  t2  风生水起    前台线程---指定为守护线程
 *       结论: 前台线程挂掉，后台线程跟着挂掉
 *
 *  软件【工厂】---进程【车间】---线程【车间工人】
 *  所有线程挂掉，【守护线程】进程挂掉
 *
 *  守护线程多执行一次: 特性: 守护线程执行按照JVM虚拟机和操作系统调动策略管理
 *                         前台线程死亡，守护线程短暂性调取一次!
 *
 *   所有前台线程死亡，守护线程死亡---进程关闭---软件关闭
 */
public class Thread_Daemon {
    public static void main(String[] args) {
        Thread t1=new Thread(()->{
            for (int i=0;i<5;i++){
                System.out.println("前台线程: 飞龙汤");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("线程结束: 飞龙喂天狗了~~~");
        }); // 前台线程/用户线程

        Thread t2=new Thread(()->{
            while (true){
                System.out.println("后台线程/守护线程: 风生水起");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }); //前台线程/用户线程--->指定后台/守护线程
        t2.setDaemon(true);

        t1.start();  // 飞龙:  5秒  喂天狗
        t2.start();  // 俞生:   5秒 +1秒  跟着飞龙挂掉
    }
}
